AWS ParallelClusterのクラスターサイズ設定とAuto Scalingグループの関係を調べてみた
AWS ParallelClusterで slurm/sge/torque のような伝統的なジョブスケジューラーを用いると、コンピューティングフリートはAuto Scalingグループで管理されます。 フリートサイズをジョブの需要に連動させることで、elasticにクラスターサイズをスケールアウト・インさせ、TCO を抑制することができます。
本記事では、コンピューティングフリートサイズに絞って、ParallelClusterの設定とAuto Scalingグループの関係を紹介します。
AWS ParallelClusterとAuto Scalingグループの対応表
AWS ParallelCluster では、設定ファイルの[Cluster]
セクションでコンピューティングフリートのサイズを定義します。
Auto Scaling グループとの関係は次の表の通りです。
ParallelCluster | 意味 | デフォルト | Auto Scalingグループ | 備考 |
---|---|---|---|---|
initial_queue_size | クラスターでコンピューティングノードとして起動する Amazon EC2 インスタンスの最初の数を設定します。 | 2 | 希望する容量(desired capacity) | maintain_initial_size=true の場合は1以上の値を設定 |
max_queue_size | クラスターで起動可能な最大数の Amazon EC2 インスタンスの最大数を設定します。 | 10 | 最大キャパシティ(maximum) | |
maintain_initial_size | 従来のスケジューラ (SGE、Slurm、および Torque) の Auto Scaling グループの最初のサイズを維持します。 | false | 最小キャパシティ(minimum) | maintain_initial_size = true の場合は initial_queue_size の値、false の場合は0 |
フリート起動後、Auto Scaling グループの「希望する容量(desired capacity)」は、ジョブの需要によって「最小キャパシティ(minimum)」から「最大キャパシティ(maximum) 」の間の値を動的に動きます。
参考 : AWS ParallelCluster Auto Scaling - AWS ParallelCluster
具体例
例1:未入力の場合
ParallelCluster側の設定値は入力必須ではありません。指定しなかった場合はデフォルト値が設定されます。
ParallelCluster | 設定値 | ASG | 設定値 |
---|---|---|---|
initial_queue_size | ブランク | desired capacity | 2 |
max_queue_size | ブランク | maximum | 10 |
maintain_initial_size | ブランク | minimum | 0 |
例2:maintain_initial_size = false の場合
ParallelCluster側で何か値を設定すると、Auto Scaling グループの対応する値が設定されます。
maintain_initial_size = false
のため、「最小キャパシティ(minimum)」は0です。
ParallelCluster | 設定値 | ASG | 設定値 |
---|---|---|---|
initial_queue_size | 4 | desired capacity | 4 |
max_queue_size | 8 | maximum | 8 |
maintain_initial_size | false | minimum | 0 |
例3: maintain_initial_size = true の場合
maintain_initial_size = true
にすると、initial_queue_size
で指定した値が Auto Scalingグループの「最小キャパシティ(minimum)」に設定されます。
ParallelCluster | 設定値 | ASG | 設定値 |
---|---|---|---|
initial_queue_size | 4 | desired capacity | 4 |
max_queue_size | 8 | maximum | 8 |
maintain_initial_size | true | minimum | 4 |
例4:固定台数を起動する場合
オンプレのように固定台数を起動したい場合、initial_queue_size
と max_queue_size
に同じ値を設定し、maintain_initial_size = true
にし、Auto Scalingグループの設定で desired capacity = maximum = minimum となるようにします。
ParallelCluster | 設定値 | ASG | 設定値 |
---|---|---|---|
initial_queue_size | 4 | desired capacity | 4 |
max_queue_size | 4 | maximum | 4 |
maintain_initial_size | true | minimum | 4 |
コンピューティングフリートを一時停止する場合
$ pcluster stop CLUSTER_NAME
を実行すると、コンピューティングフリートを停止し、マスターノードを実行中のままにします。
この時、Auto Scaling グループの desired capacity/maximum/minimum はすべて 0 になります。
ASG | 設定値 |
---|---|
desired capacity | 0 |
maximum | 0 |
minimum | 0 |
$ pcluster start CLUSTER_NAME
をすると、ParallelCluster の設定に従って Auto Scaling グループが更新され、コンピューティングフリートが再構築されます。
夜間・週末はクラスターを使わないような場合は、クラスターを一時的に stop/start することもご検討ください。
$ pcluster update でフリートのサイズ変更は可能
ParallelCluster の更新処理は注意が必要です。
設定値によっては
- クラスターの再作成
- 一度コンピューティングフリートの停止
といった運用が求められるものがあります。
今回紹介した、コンピューティングフリートのサイズに関連する3つの値に関しては、クラスターを起動させたままオンラインで変更可能です(Update policy: This setting can be changed during an update.)。
まとめ
AWS ParallelClusterのクラスターサイズ設定とAuto Scalingグループの関係について紹介しました。
ポイントは次の通りです。
- ジョブスケジューラーにslurm/sge/torqueを使用する場合、コンピューティングフリートはAuto Scalingグループで管理されます
- フリートサイズ(Auto Scalingグループのキャパシティ)は設定ファイル
[cluster]
セクションの次の3つの値で定義しますinitial_queue_size
max_queue_size
maintain_initial_size
- これら値は
$ pcluster update
でオンライン変更可能です
それでは。